package stringoperation;

public class LongestPalSubstr
{

  public static int LongestPalSubstr(String str)
  {
    int maxLength = 1; // The result (length of LPS)

    int start = 0;
    int len = str.length();

    int low, high;

    // One by one consider every character as center point of
    // even and length palindromes
    for (int i = 1 ; i < len ; ++i) {
      // Find the longest even length palindrome with center points
      // as i-1 and i.
      low = i - 1;
      high = i;
      while (low >= 0 && high < len && str.charAt(low) == str.charAt(high)) {
        if (high - low + 1 > maxLength) {
          start = low;
          maxLength = high - low + 1;
        }
        --low;
        ++high;
      }

      // Find the longest odd length palindrome with center
      // point as i
      low = i - 1;
      high = i + 1;
      while (low >= 0 && high < len && str.charAt(low) == str.charAt(high)) {
        if (high - low + 1 > maxLength) {
          start = low;
          maxLength = high - low + 1;
        }
        --low;
        ++high;
      }
    }

    System.out.println("Longest palindrome substring is: "
        + str.substring(start, start + maxLength));

    return maxLength;
  }

  /**
   * @param args
   */
  public static void main(String[] args)
  {
    // TODO Auto-generated method stub
    System.out.println(LongestPalSubstr("fhdajkabbba"));
  }

}
